package carmadness.model;

import java.util.List;

/**
 * Véletlenszerű útválasztást implementál.
 * 
 * @author Metzing Árpád
 * @version 1.0
 * @created 10-Apr-2010 2:32:42 PM
 */
public class RandomStrategy extends Strategy
{

	/**
	 * Két útvonalra való belépés között (de az óraütéseken átívelően) érvényes
	 * lista a lehetséges haladási irányokról.
	 */
	private List<Float> storedAngles;

	/**
	 * A legutóljára meghozott döntés.
	 */
	private float lastDecision;

	/**
	 * Alapértelmezett konstruktor. Az ég világon semmi dolga nincsen.
	 */
	public RandomStrategy()
	{

	}

	/**
	 * A döntést ténylegesen meghozó metódus.
	 * 
	 * @param angles
	 *            A választható irányok (szögek) listája.
	 * @return
	 * 			  A választott irány.
	 */
	public float decide( List<Float> angles )
	{
		// Ha másik paraméterlistát kaptunk, mint az előbb,
		// hozzunk új döntést!
		if ( angles != storedAngles && angles.size() > 0 )
		{
			storedAngles = angles;
			int index = (int)Math.floor( Math.random() * angles.size() );
			lastDecision = angles.get( index );
		}

		return lastDecision;
	}
}
